package aspiration;

import java.net.MalformedURLException;
import java.net.URL;

/**
 * superclasse de t�l�chargement d'un fichier online
 *
 */
public abstract class Downloader {

	/**
	 * url du fichier
	 */
	protected URL url;
	/**
	 * destination du t�l�chargement
	 */
	protected String target;
	/**
	 * url du site source
	 */
	protected String src;
		
	/**
	 * constructeur de Downloader
	 * @param _target destination du t�l�chargement
	 * @param _src site source
	 */
	public Downloader(String _target, String _src){
		target = _target;
		src = _src;
	}
		
	/**
	 * m�thode de t�l�chargement
	 */
	public abstract void save();
	
	/**
	 * acc�s � la version relative d'un lien
	 * @param _url un lien
	 * @return le lien en relatif
	 */
	protected String toRelative(String _url){
		String changedLink;
		
		if (_url.startsWith(src))
			changedLink = (_url.length()>src.length()) ? _url.substring(src.length()) : "index.html";
		else
			changedLink = _url;
		
		return changedLink;
	}
	
	/**
	 * acc�s � la version relative d'un lien
	 * @param _url un lien
	 * @return le lien en relatif
	 */
	public static String addressToRelative(String _url, String src){
		String changedLink;
		
		if (_url.startsWith(src))
			changedLink = (_url.length()>src.length()) ? _url.substring(src.length()) : "index.html";
		else
			changedLink = _url;
		
		return changedLink;
	}
	
	/**
	 * concat�nation de ".html" � un lien apr�s v�rification
	 * @param _url un lien
	 * @return le lien reformatt�
	 */
	protected String appendDotHtml(String _url){
		
		return (_url.endsWith(".html")) ? _url : _url+".html";
	}

	/**
	 * acc�s au site source
	 * @return lien du site source
	 */
	public String getSource() {
		return src;
	}

	/**
	 * acc�s � la destination de t�l�chargement
	 * @return destination du t�l�chargement
	 */
	public String getTarget() {
		return target;
	}

	/**
	 * acc�s � l'url � t�l�charger
	 * @return l'url � t�l�charger
	 */
	public URL getUrl() {
		return url;
	}	
	
	/**
	 * modification de l'url � t�l�charger
	 * @param _url la nouvelle url � t�l�charger
	 */
	public void setUrl(String _url){
		try {
			url = new URL(_url);
		} catch (MalformedURLException e) {
			System.out.println("Malformed url : "+_url);
		}
	}

}
 